/*
 * JBoss, Home of Professional Open Source
 * Copyright 2011, Red Hat, Inc. and individual contributors
 * by the @authors tag. See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */

//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2011.02.15 at 03:36:58 AM WET 
//


package org.mobicents.slee.sippresence.pojo.pidf.geopriv10.civicAddr;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;


/**
 * <p>Java class for civicAddress complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="civicAddress">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="country" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}iso3166a2" minOccurs="0"/>
 *         &lt;element name="A1" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="A2" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="A3" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="A4" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="A5" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="A6" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="PRM" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="PRD" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="RD" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="STS" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="POD" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="POM" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="RDSEC" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="RDBR" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="RDSUBBR" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="HNO" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="HNS" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="LMK" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="LOC" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="FLR" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="NAM" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="PC" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="BLD" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="UNIT" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="ROOM" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="SEAT" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="PLC" type="{http://www.w3.org/2001/XMLSchema}token" minOccurs="0"/>
 *         &lt;element name="PCN" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="POBOX" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;element name="ADDCODE" type="{urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr}caType" minOccurs="0"/>
 *         &lt;any processContents='lax' namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
 *       &lt;/sequence>
 *       &lt;anyAttribute processContents='lax'/>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "civicAddress", propOrder = {
    "country",
    "a1",
    "a2",
    "a3",
    "a4",
    "a5",
    "a6",
    "prm",
    "prd",
    "rd",
    "sts",
    "pod",
    "pom",
    "rdsec",
    "rdbr",
    "rdsubbr",
    "hno",
    "hns",
    "lmk",
    "loc",
    "flr",
    "nam",
    "pc",
    "bld",
    "unit",
    "room",
    "seat",
    "plc",
    "pcn",
    "pobox",
    "addcode",
    "any"
})
public class CivicAddress {

    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    protected String country;
    @XmlElement(name = "A1")
    protected CaType a1;
    @XmlElement(name = "A2")
    protected CaType a2;
    @XmlElement(name = "A3")
    protected CaType a3;
    @XmlElement(name = "A4")
    protected CaType a4;
    @XmlElement(name = "A5")
    protected CaType a5;
    @XmlElement(name = "A6")
    protected CaType a6;
    @XmlElement(name = "PRM")
    protected CaType prm;
    @XmlElement(name = "PRD")
    protected CaType prd;
    @XmlElement(name = "RD")
    protected CaType rd;
    @XmlElement(name = "STS")
    protected CaType sts;
    @XmlElement(name = "POD")
    protected CaType pod;
    @XmlElement(name = "POM")
    protected CaType pom;
    @XmlElement(name = "RDSEC")
    protected CaType rdsec;
    @XmlElement(name = "RDBR")
    protected CaType rdbr;
    @XmlElement(name = "RDSUBBR")
    protected CaType rdsubbr;
    @XmlElement(name = "HNO")
    protected CaType hno;
    @XmlElement(name = "HNS")
    protected CaType hns;
    @XmlElement(name = "LMK")
    protected CaType lmk;
    @XmlElement(name = "LOC")
    protected CaType loc;
    @XmlElement(name = "FLR")
    protected CaType flr;
    @XmlElement(name = "NAM")
    protected CaType nam;
    @XmlElement(name = "PC")
    protected CaType pc;
    @XmlElement(name = "BLD")
    protected CaType bld;
    @XmlElement(name = "UNIT")
    protected CaType unit;
    @XmlElement(name = "ROOM")
    protected CaType room;
    @XmlElement(name = "SEAT")
    protected CaType seat;
    @XmlElement(name = "PLC")
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "token")
    protected String plc;
    @XmlElement(name = "PCN")
    protected CaType pcn;
    @XmlElement(name = "POBOX")
    protected CaType pobox;
    @XmlElement(name = "ADDCODE")
    protected CaType addcode;
    @XmlAnyElement(lax = true)
    protected List<Object> any;
    @XmlAnyAttribute
    private Map<QName, String> otherAttributes = new HashMap<QName, String>();

    /**
     * Gets the value of the country property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getCountry() {
        return country;
    }

    /**
     * Sets the value of the country property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setCountry(String value) {
        this.country = value;
    }

    /**
     * Gets the value of the a1 property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getA1() {
        return a1;
    }

    /**
     * Sets the value of the a1 property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setA1(CaType value) {
        this.a1 = value;
    }

    /**
     * Gets the value of the a2 property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getA2() {
        return a2;
    }

    /**
     * Sets the value of the a2 property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setA2(CaType value) {
        this.a2 = value;
    }

    /**
     * Gets the value of the a3 property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getA3() {
        return a3;
    }

    /**
     * Sets the value of the a3 property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setA3(CaType value) {
        this.a3 = value;
    }

    /**
     * Gets the value of the a4 property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getA4() {
        return a4;
    }

    /**
     * Sets the value of the a4 property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setA4(CaType value) {
        this.a4 = value;
    }

    /**
     * Gets the value of the a5 property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getA5() {
        return a5;
    }

    /**
     * Sets the value of the a5 property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setA5(CaType value) {
        this.a5 = value;
    }

    /**
     * Gets the value of the a6 property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getA6() {
        return a6;
    }

    /**
     * Sets the value of the a6 property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setA6(CaType value) {
        this.a6 = value;
    }

    /**
     * Gets the value of the prm property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getPRM() {
        return prm;
    }

    /**
     * Sets the value of the prm property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setPRM(CaType value) {
        this.prm = value;
    }

    /**
     * Gets the value of the prd property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getPRD() {
        return prd;
    }

    /**
     * Sets the value of the prd property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setPRD(CaType value) {
        this.prd = value;
    }

    /**
     * Gets the value of the rd property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getRD() {
        return rd;
    }

    /**
     * Sets the value of the rd property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setRD(CaType value) {
        this.rd = value;
    }

    /**
     * Gets the value of the sts property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getSTS() {
        return sts;
    }

    /**
     * Sets the value of the sts property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setSTS(CaType value) {
        this.sts = value;
    }

    /**
     * Gets the value of the pod property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getPOD() {
        return pod;
    }

    /**
     * Sets the value of the pod property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setPOD(CaType value) {
        this.pod = value;
    }

    /**
     * Gets the value of the pom property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getPOM() {
        return pom;
    }

    /**
     * Sets the value of the pom property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setPOM(CaType value) {
        this.pom = value;
    }

    /**
     * Gets the value of the rdsec property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getRDSEC() {
        return rdsec;
    }

    /**
     * Sets the value of the rdsec property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setRDSEC(CaType value) {
        this.rdsec = value;
    }

    /**
     * Gets the value of the rdbr property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getRDBR() {
        return rdbr;
    }

    /**
     * Sets the value of the rdbr property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setRDBR(CaType value) {
        this.rdbr = value;
    }

    /**
     * Gets the value of the rdsubbr property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getRDSUBBR() {
        return rdsubbr;
    }

    /**
     * Sets the value of the rdsubbr property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setRDSUBBR(CaType value) {
        this.rdsubbr = value;
    }

    /**
     * Gets the value of the hno property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getHNO() {
        return hno;
    }

    /**
     * Sets the value of the hno property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setHNO(CaType value) {
        this.hno = value;
    }

    /**
     * Gets the value of the hns property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getHNS() {
        return hns;
    }

    /**
     * Sets the value of the hns property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setHNS(CaType value) {
        this.hns = value;
    }

    /**
     * Gets the value of the lmk property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getLMK() {
        return lmk;
    }

    /**
     * Sets the value of the lmk property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setLMK(CaType value) {
        this.lmk = value;
    }

    /**
     * Gets the value of the loc property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getLOC() {
        return loc;
    }

    /**
     * Sets the value of the loc property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setLOC(CaType value) {
        this.loc = value;
    }

    /**
     * Gets the value of the flr property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getFLR() {
        return flr;
    }

    /**
     * Sets the value of the flr property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setFLR(CaType value) {
        this.flr = value;
    }

    /**
     * Gets the value of the nam property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getNAM() {
        return nam;
    }

    /**
     * Sets the value of the nam property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setNAM(CaType value) {
        this.nam = value;
    }

    /**
     * Gets the value of the pc property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getPC() {
        return pc;
    }

    /**
     * Sets the value of the pc property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setPC(CaType value) {
        this.pc = value;
    }

    /**
     * Gets the value of the bld property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getBLD() {
        return bld;
    }

    /**
     * Sets the value of the bld property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setBLD(CaType value) {
        this.bld = value;
    }

    /**
     * Gets the value of the unit property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getUNIT() {
        return unit;
    }

    /**
     * Sets the value of the unit property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setUNIT(CaType value) {
        this.unit = value;
    }

    /**
     * Gets the value of the room property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getROOM() {
        return room;
    }

    /**
     * Sets the value of the room property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setROOM(CaType value) {
        this.room = value;
    }

    /**
     * Gets the value of the seat property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getSEAT() {
        return seat;
    }

    /**
     * Sets the value of the seat property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setSEAT(CaType value) {
        this.seat = value;
    }

    /**
     * Gets the value of the plc property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getPLC() {
        return plc;
    }

    /**
     * Sets the value of the plc property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setPLC(String value) {
        this.plc = value;
    }

    /**
     * Gets the value of the pcn property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getPCN() {
        return pcn;
    }

    /**
     * Sets the value of the pcn property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setPCN(CaType value) {
        this.pcn = value;
    }

    /**
     * Gets the value of the pobox property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getPOBOX() {
        return pobox;
    }

    /**
     * Sets the value of the pobox property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setPOBOX(CaType value) {
        this.pobox = value;
    }

    /**
     * Gets the value of the addcode property.
     * 
     * @return
     *     possible object is
     *     {@link CaType }
     *     
     */
    public CaType getADDCODE() {
        return addcode;
    }

    /**
     * Sets the value of the addcode property.
     * 
     * @param value
     *     allowed object is
     *     {@link CaType }
     *     
     */
    public void setADDCODE(CaType value) {
        this.addcode = value;
    }

    /**
     * Gets the value of the any property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the any property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getAny().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link Element }
     * {@link Object }
     * 
     * 
     */
    public List<Object> getAny() {
        if (any == null) {
            any = new ArrayList<Object>();
        }
        return this.any;
    }

    /**
     * Gets a map that contains attributes that aren't bound to any typed property on this class.
     * 
     * <p>
     * the map is keyed by the name of the attribute and 
     * the value is the string value of the attribute.
     * 
     * the map returned by this method is live, and you can add new attribute
     * by updating the map directly. Because of this design, there's no setter.
     * 
     * 
     * @return
     *     always non-null
     */
    public Map<QName, String> getOtherAttributes() {
        return otherAttributes;
    }

}
